/*******************************************************************************
 * Copyright (c) 2018, College of William & Mary
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of the College of William & Mary nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COLLEGE OF WILLIAM & MARY BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * PRIMME: https://github.com/primme/primme
 * Contact: Andreas Stathopoulos, a n d r e a s _at_ c s . w m . e d u
 *******************************************************************************
 *   NOTE: THIS FILE IS AUTOMATICALLY GENERATED. PLEASE DON'T MODIFY
 ******************************************************************************/


#ifndef auxiliary_eigs_H
#define auxiliary_eigs_H
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextSprimme)
#  define primme_get_contextSprimme CONCAT(primme_get_context,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRprimme)
#  define primme_get_contextRprimme CONCAT(primme_get_context,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextSHprimme)
#  define primme_get_contextSHprimme CONCAT(primme_get_context,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRHprimme)
#  define primme_get_contextRHprimme CONCAT(primme_get_context,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextSXprimme)
#  define primme_get_contextSXprimme CONCAT(primme_get_context,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRXprimme)
#  define primme_get_contextRXprimme CONCAT(primme_get_context,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextShprimme)
#  define primme_get_contextShprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRhprimme)
#  define primme_get_contextRhprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextSsprimme)
#  define primme_get_contextSsprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRsprimme)
#  define primme_get_contextRsprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextSdprimme)
#  define primme_get_contextSdprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRdprimme)
#  define primme_get_contextRdprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextSqprimme)
#  define primme_get_contextSqprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRqprimme)
#  define primme_get_contextRqprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextSXhprimme)
#  define primme_get_contextSXhprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRXhprimme)
#  define primme_get_contextRXhprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextSXsprimme)
#  define primme_get_contextSXsprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRXsprimme)
#  define primme_get_contextRXsprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextSXdprimme)
#  define primme_get_contextSXdprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRXdprimme)
#  define primme_get_contextRXdprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextSXqprimme)
#  define primme_get_contextSXqprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRXqprimme)
#  define primme_get_contextRXqprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextSHhprimme)
#  define primme_get_contextSHhprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRHhprimme)
#  define primme_get_contextRHhprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextSHsprimme)
#  define primme_get_contextSHsprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRHsprimme)
#  define primme_get_contextRHsprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextSHdprimme)
#  define primme_get_contextSHdprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRHdprimme)
#  define primme_get_contextRHdprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextSHqprimme)
#  define primme_get_contextSHqprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_get_contextRHqprimme)
#  define primme_get_contextRHqprimme CONCAT(primme_get_context,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
primme_context primme_get_context(primme_params *primme);
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextSprimme)
#  define primme_free_contextSprimme CONCAT(primme_free_context,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRprimme)
#  define primme_free_contextRprimme CONCAT(primme_free_context,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextSHprimme)
#  define primme_free_contextSHprimme CONCAT(primme_free_context,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRHprimme)
#  define primme_free_contextRHprimme CONCAT(primme_free_context,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextSXprimme)
#  define primme_free_contextSXprimme CONCAT(primme_free_context,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRXprimme)
#  define primme_free_contextRXprimme CONCAT(primme_free_context,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextShprimme)
#  define primme_free_contextShprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRhprimme)
#  define primme_free_contextRhprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextSsprimme)
#  define primme_free_contextSsprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRsprimme)
#  define primme_free_contextRsprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextSdprimme)
#  define primme_free_contextSdprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRdprimme)
#  define primme_free_contextRdprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextSqprimme)
#  define primme_free_contextSqprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRqprimme)
#  define primme_free_contextRqprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextSXhprimme)
#  define primme_free_contextSXhprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRXhprimme)
#  define primme_free_contextRXhprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextSXsprimme)
#  define primme_free_contextSXsprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRXsprimme)
#  define primme_free_contextRXsprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextSXdprimme)
#  define primme_free_contextSXdprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRXdprimme)
#  define primme_free_contextRXdprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextSXqprimme)
#  define primme_free_contextSXqprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRXqprimme)
#  define primme_free_contextRXqprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextSHhprimme)
#  define primme_free_contextSHhprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRHhprimme)
#  define primme_free_contextRHhprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextSHsprimme)
#  define primme_free_contextSHsprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRHsprimme)
#  define primme_free_contextRHsprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextSHdprimme)
#  define primme_free_contextSHdprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRHdprimme)
#  define primme_free_contextRHdprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextSHqprimme)
#  define primme_free_contextSHqprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(primme_free_contextRHqprimme)
#  define primme_free_contextRHqprimme CONCAT(primme_free_context,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
void primme_free_context(primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_Sprimme)
#  define matrixMatvec_Sprimme CONCAT(matrixMatvec_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_Rprimme)
#  define matrixMatvec_Rprimme CONCAT(matrixMatvec_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_SHprimme)
#  define matrixMatvec_SHprimme CONCAT(matrixMatvec_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_RHprimme)
#  define matrixMatvec_RHprimme CONCAT(matrixMatvec_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_SXprimme)
#  define matrixMatvec_SXprimme CONCAT(matrixMatvec_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_RXprimme)
#  define matrixMatvec_RXprimme CONCAT(matrixMatvec_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_Shprimme)
#  define matrixMatvec_Shprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_Rhprimme)
#  define matrixMatvec_Rhprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_Ssprimme)
#  define matrixMatvec_Ssprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_Rsprimme)
#  define matrixMatvec_Rsprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_Sdprimme)
#  define matrixMatvec_Sdprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_Rdprimme)
#  define matrixMatvec_Rdprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_Sqprimme)
#  define matrixMatvec_Sqprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_Rqprimme)
#  define matrixMatvec_Rqprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_SXhprimme)
#  define matrixMatvec_SXhprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_RXhprimme)
#  define matrixMatvec_RXhprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_SXsprimme)
#  define matrixMatvec_SXsprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_RXsprimme)
#  define matrixMatvec_RXsprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_SXdprimme)
#  define matrixMatvec_SXdprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_RXdprimme)
#  define matrixMatvec_RXdprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_SXqprimme)
#  define matrixMatvec_SXqprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_RXqprimme)
#  define matrixMatvec_RXqprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_SHhprimme)
#  define matrixMatvec_SHhprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_RHhprimme)
#  define matrixMatvec_RHhprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_SHsprimme)
#  define matrixMatvec_SHsprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_RHsprimme)
#  define matrixMatvec_RHsprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_SHdprimme)
#  define matrixMatvec_SHdprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_RHdprimme)
#  define matrixMatvec_RHdprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_SHqprimme)
#  define matrixMatvec_SHqprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(matrixMatvec_RHqprimme)
#  define matrixMatvec_RHqprimme CONCAT(matrixMatvec_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int matrixMatvec_dprimme(dummy_type_dprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_dprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_Sprimme)
#  define massMatrixMatvec_Sprimme CONCAT(massMatrixMatvec_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_Rprimme)
#  define massMatrixMatvec_Rprimme CONCAT(massMatrixMatvec_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_SHprimme)
#  define massMatrixMatvec_SHprimme CONCAT(massMatrixMatvec_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_RHprimme)
#  define massMatrixMatvec_RHprimme CONCAT(massMatrixMatvec_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_SXprimme)
#  define massMatrixMatvec_SXprimme CONCAT(massMatrixMatvec_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_RXprimme)
#  define massMatrixMatvec_RXprimme CONCAT(massMatrixMatvec_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_Shprimme)
#  define massMatrixMatvec_Shprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_Rhprimme)
#  define massMatrixMatvec_Rhprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_Ssprimme)
#  define massMatrixMatvec_Ssprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_Rsprimme)
#  define massMatrixMatvec_Rsprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_Sdprimme)
#  define massMatrixMatvec_Sdprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_Rdprimme)
#  define massMatrixMatvec_Rdprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_Sqprimme)
#  define massMatrixMatvec_Sqprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_Rqprimme)
#  define massMatrixMatvec_Rqprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_SXhprimme)
#  define massMatrixMatvec_SXhprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_RXhprimme)
#  define massMatrixMatvec_RXhprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_SXsprimme)
#  define massMatrixMatvec_SXsprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_RXsprimme)
#  define massMatrixMatvec_RXsprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_SXdprimme)
#  define massMatrixMatvec_SXdprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_RXdprimme)
#  define massMatrixMatvec_RXdprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_SXqprimme)
#  define massMatrixMatvec_SXqprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_RXqprimme)
#  define massMatrixMatvec_RXqprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_SHhprimme)
#  define massMatrixMatvec_SHhprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_RHhprimme)
#  define massMatrixMatvec_RHhprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_SHsprimme)
#  define massMatrixMatvec_SHsprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_RHsprimme)
#  define massMatrixMatvec_RHsprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_SHdprimme)
#  define massMatrixMatvec_SHdprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_RHdprimme)
#  define massMatrixMatvec_RHdprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_SHqprimme)
#  define massMatrixMatvec_SHqprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(massMatrixMatvec_RHqprimme)
#  define massMatrixMatvec_RHqprimme CONCAT(massMatrixMatvec_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int massMatrixMatvec_dprimme(dummy_type_dprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_dprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_Sprimme)
#  define applyPreconditioner_Sprimme CONCAT(applyPreconditioner_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_Rprimme)
#  define applyPreconditioner_Rprimme CONCAT(applyPreconditioner_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_SHprimme)
#  define applyPreconditioner_SHprimme CONCAT(applyPreconditioner_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_RHprimme)
#  define applyPreconditioner_RHprimme CONCAT(applyPreconditioner_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_SXprimme)
#  define applyPreconditioner_SXprimme CONCAT(applyPreconditioner_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_RXprimme)
#  define applyPreconditioner_RXprimme CONCAT(applyPreconditioner_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_Shprimme)
#  define applyPreconditioner_Shprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_Rhprimme)
#  define applyPreconditioner_Rhprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_Ssprimme)
#  define applyPreconditioner_Ssprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_Rsprimme)
#  define applyPreconditioner_Rsprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_Sdprimme)
#  define applyPreconditioner_Sdprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_Rdprimme)
#  define applyPreconditioner_Rdprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_Sqprimme)
#  define applyPreconditioner_Sqprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_Rqprimme)
#  define applyPreconditioner_Rqprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_SXhprimme)
#  define applyPreconditioner_SXhprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_RXhprimme)
#  define applyPreconditioner_RXhprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_SXsprimme)
#  define applyPreconditioner_SXsprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_RXsprimme)
#  define applyPreconditioner_RXsprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_SXdprimme)
#  define applyPreconditioner_SXdprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_RXdprimme)
#  define applyPreconditioner_RXdprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_SXqprimme)
#  define applyPreconditioner_SXqprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_RXqprimme)
#  define applyPreconditioner_RXqprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_SHhprimme)
#  define applyPreconditioner_SHhprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_RHhprimme)
#  define applyPreconditioner_RHhprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_SHsprimme)
#  define applyPreconditioner_SHsprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_RHsprimme)
#  define applyPreconditioner_RHsprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_SHdprimme)
#  define applyPreconditioner_SHdprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_RHdprimme)
#  define applyPreconditioner_RHdprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_SHqprimme)
#  define applyPreconditioner_SHqprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(applyPreconditioner_RHqprimme)
#  define applyPreconditioner_RHqprimme CONCAT(applyPreconditioner_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int applyPreconditioner_dprimme(dummy_type_dprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_dprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_Sprimme)
#  define globalSum_Sprimme CONCAT(globalSum_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_Rprimme)
#  define globalSum_Rprimme CONCAT(globalSum_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_SHprimme)
#  define globalSum_SHprimme CONCAT(globalSum_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_RHprimme)
#  define globalSum_RHprimme CONCAT(globalSum_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_SXprimme)
#  define globalSum_SXprimme CONCAT(globalSum_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_RXprimme)
#  define globalSum_RXprimme CONCAT(globalSum_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_Shprimme)
#  define globalSum_Shprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_Rhprimme)
#  define globalSum_Rhprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_Ssprimme)
#  define globalSum_Ssprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_Rsprimme)
#  define globalSum_Rsprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_Sdprimme)
#  define globalSum_Sdprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_Rdprimme)
#  define globalSum_Rdprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_Sqprimme)
#  define globalSum_Sqprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_Rqprimme)
#  define globalSum_Rqprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_SXhprimme)
#  define globalSum_SXhprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_RXhprimme)
#  define globalSum_RXhprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_SXsprimme)
#  define globalSum_SXsprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_RXsprimme)
#  define globalSum_RXsprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_SXdprimme)
#  define globalSum_SXdprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_RXdprimme)
#  define globalSum_RXdprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_SXqprimme)
#  define globalSum_SXqprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_RXqprimme)
#  define globalSum_RXqprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_SHhprimme)
#  define globalSum_SHhprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_RHhprimme)
#  define globalSum_RHhprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_SHsprimme)
#  define globalSum_SHsprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_RHsprimme)
#  define globalSum_RHsprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_SHdprimme)
#  define globalSum_SHdprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_RHdprimme)
#  define globalSum_RHdprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_SHqprimme)
#  define globalSum_SHqprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_RHqprimme)
#  define globalSum_RHqprimme CONCAT(globalSum_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int globalSum_dprimme(dummy_type_dprimme *buffer, int count, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_Sprimme)
#  define broadcast_Sprimme CONCAT(broadcast_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_Rprimme)
#  define broadcast_Rprimme CONCAT(broadcast_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_SHprimme)
#  define broadcast_SHprimme CONCAT(broadcast_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_RHprimme)
#  define broadcast_RHprimme CONCAT(broadcast_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_SXprimme)
#  define broadcast_SXprimme CONCAT(broadcast_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_RXprimme)
#  define broadcast_RXprimme CONCAT(broadcast_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_Shprimme)
#  define broadcast_Shprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_Rhprimme)
#  define broadcast_Rhprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_Ssprimme)
#  define broadcast_Ssprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_Rsprimme)
#  define broadcast_Rsprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_Sdprimme)
#  define broadcast_Sdprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_Rdprimme)
#  define broadcast_Rdprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_Sqprimme)
#  define broadcast_Sqprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_Rqprimme)
#  define broadcast_Rqprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_SXhprimme)
#  define broadcast_SXhprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_RXhprimme)
#  define broadcast_RXhprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_SXsprimme)
#  define broadcast_SXsprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_RXsprimme)
#  define broadcast_RXsprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_SXdprimme)
#  define broadcast_SXdprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_RXdprimme)
#  define broadcast_RXdprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_SXqprimme)
#  define broadcast_SXqprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_RXqprimme)
#  define broadcast_RXqprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_SHhprimme)
#  define broadcast_SHhprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_RHhprimme)
#  define broadcast_RHhprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_SHsprimme)
#  define broadcast_SHsprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_RHsprimme)
#  define broadcast_RHsprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_SHdprimme)
#  define broadcast_SHdprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_RHdprimme)
#  define broadcast_RHdprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_SHqprimme)
#  define broadcast_SHqprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_RHqprimme)
#  define broadcast_RHqprimme CONCAT(broadcast_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int broadcast_dprimme(dummy_type_dprimme *buffer, int count, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeSprimme)
#  define globalSum_TprimmeSprimme CONCAT(globalSum_Tprimme,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRprimme)
#  define globalSum_TprimmeRprimme CONCAT(globalSum_Tprimme,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeSHprimme)
#  define globalSum_TprimmeSHprimme CONCAT(globalSum_Tprimme,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRHprimme)
#  define globalSum_TprimmeRHprimme CONCAT(globalSum_Tprimme,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeSXprimme)
#  define globalSum_TprimmeSXprimme CONCAT(globalSum_Tprimme,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRXprimme)
#  define globalSum_TprimmeRXprimme CONCAT(globalSum_Tprimme,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeShprimme)
#  define globalSum_TprimmeShprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRhprimme)
#  define globalSum_TprimmeRhprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeSsprimme)
#  define globalSum_TprimmeSsprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRsprimme)
#  define globalSum_TprimmeRsprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeSdprimme)
#  define globalSum_TprimmeSdprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRdprimme)
#  define globalSum_TprimmeRdprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeSqprimme)
#  define globalSum_TprimmeSqprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRqprimme)
#  define globalSum_TprimmeRqprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeSXhprimme)
#  define globalSum_TprimmeSXhprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRXhprimme)
#  define globalSum_TprimmeRXhprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeSXsprimme)
#  define globalSum_TprimmeSXsprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRXsprimme)
#  define globalSum_TprimmeRXsprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeSXdprimme)
#  define globalSum_TprimmeSXdprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRXdprimme)
#  define globalSum_TprimmeRXdprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeSXqprimme)
#  define globalSum_TprimmeSXqprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRXqprimme)
#  define globalSum_TprimmeRXqprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeSHhprimme)
#  define globalSum_TprimmeSHhprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRHhprimme)
#  define globalSum_TprimmeRHhprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeSHsprimme)
#  define globalSum_TprimmeSHsprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRHsprimme)
#  define globalSum_TprimmeRHsprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeSHdprimme)
#  define globalSum_TprimmeSHdprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRHdprimme)
#  define globalSum_TprimmeRHdprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeSHqprimme)
#  define globalSum_TprimmeSHqprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(globalSum_TprimmeRHqprimme)
#  define globalSum_TprimmeRHqprimme CONCAT(globalSum_Tprimme,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int globalSum_Tprimme(
      void *buffer, primme_op_datatype buffert, int count, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeSprimme)
#  define broadcast_TprimmeSprimme CONCAT(broadcast_Tprimme,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRprimme)
#  define broadcast_TprimmeRprimme CONCAT(broadcast_Tprimme,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeSHprimme)
#  define broadcast_TprimmeSHprimme CONCAT(broadcast_Tprimme,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRHprimme)
#  define broadcast_TprimmeRHprimme CONCAT(broadcast_Tprimme,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeSXprimme)
#  define broadcast_TprimmeSXprimme CONCAT(broadcast_Tprimme,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRXprimme)
#  define broadcast_TprimmeRXprimme CONCAT(broadcast_Tprimme,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeShprimme)
#  define broadcast_TprimmeShprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRhprimme)
#  define broadcast_TprimmeRhprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeSsprimme)
#  define broadcast_TprimmeSsprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRsprimme)
#  define broadcast_TprimmeRsprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeSdprimme)
#  define broadcast_TprimmeSdprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRdprimme)
#  define broadcast_TprimmeRdprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeSqprimme)
#  define broadcast_TprimmeSqprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRqprimme)
#  define broadcast_TprimmeRqprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeSXhprimme)
#  define broadcast_TprimmeSXhprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRXhprimme)
#  define broadcast_TprimmeRXhprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeSXsprimme)
#  define broadcast_TprimmeSXsprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRXsprimme)
#  define broadcast_TprimmeRXsprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeSXdprimme)
#  define broadcast_TprimmeSXdprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRXdprimme)
#  define broadcast_TprimmeRXdprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeSXqprimme)
#  define broadcast_TprimmeSXqprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRXqprimme)
#  define broadcast_TprimmeRXqprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeSHhprimme)
#  define broadcast_TprimmeSHhprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRHhprimme)
#  define broadcast_TprimmeRHhprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeSHsprimme)
#  define broadcast_TprimmeSHsprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRHsprimme)
#  define broadcast_TprimmeRHsprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeSHdprimme)
#  define broadcast_TprimmeSHdprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRHdprimme)
#  define broadcast_TprimmeRHdprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeSHqprimme)
#  define broadcast_TprimmeSHqprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_TprimmeRHqprimme)
#  define broadcast_TprimmeRHqprimme CONCAT(broadcast_Tprimme,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int broadcast_Tprimme(
      void *buffer, primme_op_datatype buffert, int count, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeSprimme)
#  define broadcast_iprimmeSprimme CONCAT(broadcast_iprimme,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRprimme)
#  define broadcast_iprimmeRprimme CONCAT(broadcast_iprimme,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeSHprimme)
#  define broadcast_iprimmeSHprimme CONCAT(broadcast_iprimme,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRHprimme)
#  define broadcast_iprimmeRHprimme CONCAT(broadcast_iprimme,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeSXprimme)
#  define broadcast_iprimmeSXprimme CONCAT(broadcast_iprimme,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRXprimme)
#  define broadcast_iprimmeRXprimme CONCAT(broadcast_iprimme,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeShprimme)
#  define broadcast_iprimmeShprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRhprimme)
#  define broadcast_iprimmeRhprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeSsprimme)
#  define broadcast_iprimmeSsprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRsprimme)
#  define broadcast_iprimmeRsprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeSdprimme)
#  define broadcast_iprimmeSdprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRdprimme)
#  define broadcast_iprimmeRdprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeSqprimme)
#  define broadcast_iprimmeSqprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRqprimme)
#  define broadcast_iprimmeRqprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeSXhprimme)
#  define broadcast_iprimmeSXhprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRXhprimme)
#  define broadcast_iprimmeRXhprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeSXsprimme)
#  define broadcast_iprimmeSXsprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRXsprimme)
#  define broadcast_iprimmeRXsprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeSXdprimme)
#  define broadcast_iprimmeSXdprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRXdprimme)
#  define broadcast_iprimmeRXdprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeSXqprimme)
#  define broadcast_iprimmeSXqprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRXqprimme)
#  define broadcast_iprimmeRXqprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeSHhprimme)
#  define broadcast_iprimmeSHhprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRHhprimme)
#  define broadcast_iprimmeRHhprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeSHsprimme)
#  define broadcast_iprimmeSHsprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRHsprimme)
#  define broadcast_iprimmeRHsprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeSHdprimme)
#  define broadcast_iprimmeSHdprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRHdprimme)
#  define broadcast_iprimmeRHdprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeSHqprimme)
#  define broadcast_iprimmeSHqprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(broadcast_iprimmeRHqprimme)
#  define broadcast_iprimmeRHqprimme CONCAT(broadcast_iprimme,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int broadcast_iprimme(int *buffer, int count, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_Sprimme)
#  define machineEpsMatrix_Sprimme CONCAT(machineEpsMatrix_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_Rprimme)
#  define machineEpsMatrix_Rprimme CONCAT(machineEpsMatrix_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_SHprimme)
#  define machineEpsMatrix_SHprimme CONCAT(machineEpsMatrix_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_RHprimme)
#  define machineEpsMatrix_RHprimme CONCAT(machineEpsMatrix_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_SXprimme)
#  define machineEpsMatrix_SXprimme CONCAT(machineEpsMatrix_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_RXprimme)
#  define machineEpsMatrix_RXprimme CONCAT(machineEpsMatrix_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_Shprimme)
#  define machineEpsMatrix_Shprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_Rhprimme)
#  define machineEpsMatrix_Rhprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_Ssprimme)
#  define machineEpsMatrix_Ssprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_Rsprimme)
#  define machineEpsMatrix_Rsprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_Sdprimme)
#  define machineEpsMatrix_Sdprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_Rdprimme)
#  define machineEpsMatrix_Rdprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_Sqprimme)
#  define machineEpsMatrix_Sqprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_Rqprimme)
#  define machineEpsMatrix_Rqprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_SXhprimme)
#  define machineEpsMatrix_SXhprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_RXhprimme)
#  define machineEpsMatrix_RXhprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_SXsprimme)
#  define machineEpsMatrix_SXsprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_RXsprimme)
#  define machineEpsMatrix_RXsprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_SXdprimme)
#  define machineEpsMatrix_SXdprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_RXdprimme)
#  define machineEpsMatrix_RXdprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_SXqprimme)
#  define machineEpsMatrix_SXqprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_RXqprimme)
#  define machineEpsMatrix_RXqprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_SHhprimme)
#  define machineEpsMatrix_SHhprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_RHhprimme)
#  define machineEpsMatrix_RHhprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_SHsprimme)
#  define machineEpsMatrix_SHsprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_RHsprimme)
#  define machineEpsMatrix_RHsprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_SHdprimme)
#  define machineEpsMatrix_SHdprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_RHdprimme)
#  define machineEpsMatrix_RHdprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_SHqprimme)
#  define machineEpsMatrix_SHqprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsMatrix_RHqprimme)
#  define machineEpsMatrix_RHqprimme CONCAT(machineEpsMatrix_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int machineEpsMatrix_dprimme(double *eps, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_Sprimme)
#  define machineEpsOrth_Sprimme CONCAT(machineEpsOrth_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_Rprimme)
#  define machineEpsOrth_Rprimme CONCAT(machineEpsOrth_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_SHprimme)
#  define machineEpsOrth_SHprimme CONCAT(machineEpsOrth_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_RHprimme)
#  define machineEpsOrth_RHprimme CONCAT(machineEpsOrth_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_SXprimme)
#  define machineEpsOrth_SXprimme CONCAT(machineEpsOrth_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_RXprimme)
#  define machineEpsOrth_RXprimme CONCAT(machineEpsOrth_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_Shprimme)
#  define machineEpsOrth_Shprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_Rhprimme)
#  define machineEpsOrth_Rhprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_Ssprimme)
#  define machineEpsOrth_Ssprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_Rsprimme)
#  define machineEpsOrth_Rsprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_Sdprimme)
#  define machineEpsOrth_Sdprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_Rdprimme)
#  define machineEpsOrth_Rdprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_Sqprimme)
#  define machineEpsOrth_Sqprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_Rqprimme)
#  define machineEpsOrth_Rqprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_SXhprimme)
#  define machineEpsOrth_SXhprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_RXhprimme)
#  define machineEpsOrth_RXhprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_SXsprimme)
#  define machineEpsOrth_SXsprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_RXsprimme)
#  define machineEpsOrth_RXsprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_SXdprimme)
#  define machineEpsOrth_SXdprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_RXdprimme)
#  define machineEpsOrth_RXdprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_SXqprimme)
#  define machineEpsOrth_SXqprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_RXqprimme)
#  define machineEpsOrth_RXqprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_SHhprimme)
#  define machineEpsOrth_SHhprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_RHhprimme)
#  define machineEpsOrth_RHhprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_SHsprimme)
#  define machineEpsOrth_SHsprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_RHsprimme)
#  define machineEpsOrth_RHsprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_SHdprimme)
#  define machineEpsOrth_SHdprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_RHdprimme)
#  define machineEpsOrth_RHdprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_SHqprimme)
#  define machineEpsOrth_SHqprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(machineEpsOrth_RHqprimme)
#  define machineEpsOrth_RHqprimme CONCAT(machineEpsOrth_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int machineEpsOrth_dprimme(double *eps, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_Sprimme)
#  define problemNorm_Sprimme CONCAT(problemNorm_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_Rprimme)
#  define problemNorm_Rprimme CONCAT(problemNorm_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_SHprimme)
#  define problemNorm_SHprimme CONCAT(problemNorm_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_RHprimme)
#  define problemNorm_RHprimme CONCAT(problemNorm_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_SXprimme)
#  define problemNorm_SXprimme CONCAT(problemNorm_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_RXprimme)
#  define problemNorm_RXprimme CONCAT(problemNorm_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_Shprimme)
#  define problemNorm_Shprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_Rhprimme)
#  define problemNorm_Rhprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_Ssprimme)
#  define problemNorm_Ssprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_Rsprimme)
#  define problemNorm_Rsprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_Sdprimme)
#  define problemNorm_Sdprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_Rdprimme)
#  define problemNorm_Rdprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_Sqprimme)
#  define problemNorm_Sqprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_Rqprimme)
#  define problemNorm_Rqprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_SXhprimme)
#  define problemNorm_SXhprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_RXhprimme)
#  define problemNorm_RXhprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_SXsprimme)
#  define problemNorm_SXsprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_RXsprimme)
#  define problemNorm_RXsprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_SXdprimme)
#  define problemNorm_SXdprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_RXdprimme)
#  define problemNorm_RXdprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_SXqprimme)
#  define problemNorm_SXqprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_RXqprimme)
#  define problemNorm_RXqprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_SHhprimme)
#  define problemNorm_SHhprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_RHhprimme)
#  define problemNorm_RHhprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_SHsprimme)
#  define problemNorm_SHsprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_RHsprimme)
#  define problemNorm_RHsprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_SHdprimme)
#  define problemNorm_SHdprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_RHdprimme)
#  define problemNorm_RHdprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_SHqprimme)
#  define problemNorm_SHqprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(problemNorm_RHqprimme)
#  define problemNorm_RHqprimme CONCAT(problemNorm_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
dummy_type_dprimme problemNorm_dprimme(
      int overrideUserEstimations, struct primme_params *primme);
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_Sprimme)
#  define deltaEig_Sprimme CONCAT(deltaEig_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_Rprimme)
#  define deltaEig_Rprimme CONCAT(deltaEig_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_SHprimme)
#  define deltaEig_SHprimme CONCAT(deltaEig_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_RHprimme)
#  define deltaEig_RHprimme CONCAT(deltaEig_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_SXprimme)
#  define deltaEig_SXprimme CONCAT(deltaEig_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_RXprimme)
#  define deltaEig_RXprimme CONCAT(deltaEig_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_Shprimme)
#  define deltaEig_Shprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_Rhprimme)
#  define deltaEig_Rhprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_Ssprimme)
#  define deltaEig_Ssprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_Rsprimme)
#  define deltaEig_Rsprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_Sdprimme)
#  define deltaEig_Sdprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_Rdprimme)
#  define deltaEig_Rdprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_Sqprimme)
#  define deltaEig_Sqprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_Rqprimme)
#  define deltaEig_Rqprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_SXhprimme)
#  define deltaEig_SXhprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_RXhprimme)
#  define deltaEig_RXhprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_SXsprimme)
#  define deltaEig_SXsprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_RXsprimme)
#  define deltaEig_RXsprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_SXdprimme)
#  define deltaEig_SXdprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_RXdprimme)
#  define deltaEig_RXdprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_SXqprimme)
#  define deltaEig_SXqprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_RXqprimme)
#  define deltaEig_RXqprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_SHhprimme)
#  define deltaEig_SHhprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_RHhprimme)
#  define deltaEig_RHhprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_SHsprimme)
#  define deltaEig_SHsprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_RHsprimme)
#  define deltaEig_RHsprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_SHdprimme)
#  define deltaEig_SHdprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_RHdprimme)
#  define deltaEig_RHdprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_SHqprimme)
#  define deltaEig_SHqprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(deltaEig_RHqprimme)
#  define deltaEig_RHqprimme CONCAT(deltaEig_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
dummy_type_dprimme deltaEig_dprimme(
      int overrideUserEstimations, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_Sprimme)
#  define Num_dist_dots_Sprimme CONCAT(Num_dist_dots_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_Rprimme)
#  define Num_dist_dots_Rprimme CONCAT(Num_dist_dots_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_SHprimme)
#  define Num_dist_dots_SHprimme CONCAT(Num_dist_dots_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_RHprimme)
#  define Num_dist_dots_RHprimme CONCAT(Num_dist_dots_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_SXprimme)
#  define Num_dist_dots_SXprimme CONCAT(Num_dist_dots_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_RXprimme)
#  define Num_dist_dots_RXprimme CONCAT(Num_dist_dots_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_Shprimme)
#  define Num_dist_dots_Shprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_Rhprimme)
#  define Num_dist_dots_Rhprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_Ssprimme)
#  define Num_dist_dots_Ssprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_Rsprimme)
#  define Num_dist_dots_Rsprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_Sdprimme)
#  define Num_dist_dots_Sdprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_Rdprimme)
#  define Num_dist_dots_Rdprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_Sqprimme)
#  define Num_dist_dots_Sqprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_Rqprimme)
#  define Num_dist_dots_Rqprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_SXhprimme)
#  define Num_dist_dots_SXhprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_RXhprimme)
#  define Num_dist_dots_RXhprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_SXsprimme)
#  define Num_dist_dots_SXsprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_RXsprimme)
#  define Num_dist_dots_RXsprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_SXdprimme)
#  define Num_dist_dots_SXdprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_RXdprimme)
#  define Num_dist_dots_RXdprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_SXqprimme)
#  define Num_dist_dots_SXqprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_RXqprimme)
#  define Num_dist_dots_RXqprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_SHhprimme)
#  define Num_dist_dots_SHhprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_RHhprimme)
#  define Num_dist_dots_RHhprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_SHsprimme)
#  define Num_dist_dots_SHsprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_RHsprimme)
#  define Num_dist_dots_RHsprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_SHdprimme)
#  define Num_dist_dots_SHdprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_RHdprimme)
#  define Num_dist_dots_RHdprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_SHqprimme)
#  define Num_dist_dots_SHqprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_RHqprimme)
#  define Num_dist_dots_RHqprimme CONCAT(Num_dist_dots_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_dist_dots_dprimme(dummy_type_dprimme *x, PRIMME_INT ldx, dummy_type_dprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_dprimme *result, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_Sprimme)
#  define Num_dist_dots_real_Sprimme CONCAT(Num_dist_dots_real_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_Rprimme)
#  define Num_dist_dots_real_Rprimme CONCAT(Num_dist_dots_real_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_SHprimme)
#  define Num_dist_dots_real_SHprimme CONCAT(Num_dist_dots_real_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_RHprimme)
#  define Num_dist_dots_real_RHprimme CONCAT(Num_dist_dots_real_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_SXprimme)
#  define Num_dist_dots_real_SXprimme CONCAT(Num_dist_dots_real_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_RXprimme)
#  define Num_dist_dots_real_RXprimme CONCAT(Num_dist_dots_real_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_Shprimme)
#  define Num_dist_dots_real_Shprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_Rhprimme)
#  define Num_dist_dots_real_Rhprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_Ssprimme)
#  define Num_dist_dots_real_Ssprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_Rsprimme)
#  define Num_dist_dots_real_Rsprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_Sdprimme)
#  define Num_dist_dots_real_Sdprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_Rdprimme)
#  define Num_dist_dots_real_Rdprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_Sqprimme)
#  define Num_dist_dots_real_Sqprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_Rqprimme)
#  define Num_dist_dots_real_Rqprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_SXhprimme)
#  define Num_dist_dots_real_SXhprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_RXhprimme)
#  define Num_dist_dots_real_RXhprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_SXsprimme)
#  define Num_dist_dots_real_SXsprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_RXsprimme)
#  define Num_dist_dots_real_RXsprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_SXdprimme)
#  define Num_dist_dots_real_SXdprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_RXdprimme)
#  define Num_dist_dots_real_RXdprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_SXqprimme)
#  define Num_dist_dots_real_SXqprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_RXqprimme)
#  define Num_dist_dots_real_RXqprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_SHhprimme)
#  define Num_dist_dots_real_SHhprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_RHhprimme)
#  define Num_dist_dots_real_RHhprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_SHsprimme)
#  define Num_dist_dots_real_SHsprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_RHsprimme)
#  define Num_dist_dots_real_RHsprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_SHdprimme)
#  define Num_dist_dots_real_SHdprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_RHdprimme)
#  define Num_dist_dots_real_RHdprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_SHqprimme)
#  define Num_dist_dots_real_SHqprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_dist_dots_real_RHqprimme)
#  define Num_dist_dots_real_RHqprimme CONCAT(Num_dist_dots_real_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_dist_dots_real_dprimme(dummy_type_dprimme *x, PRIMME_INT ldx, dummy_type_dprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_dprimme *result, primme_context ctx);
int matrixMatvec_hprimme(dummy_type_hprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_hprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_hprimme(dummy_type_hprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_hprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_hprimme(dummy_type_hprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_hprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int globalSum_hprimme(dummy_type_hprimme *buffer, int count, primme_context ctx);
int broadcast_hprimme(dummy_type_hprimme *buffer, int count, primme_context ctx);
int machineEpsMatrix_hprimme(double *eps, primme_context ctx);
int machineEpsOrth_hprimme(double *eps, primme_context ctx);
dummy_type_sprimme problemNorm_hprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_sprimme deltaEig_hprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_hprimme(dummy_type_hprimme *x, PRIMME_INT ldx, dummy_type_hprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int Num_dist_dots_real_hprimme(dummy_type_hprimme *x, PRIMME_INT ldx, dummy_type_hprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int matrixMatvec_kprimme(dummy_type_kprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_kprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_kprimme(dummy_type_kprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_kprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_kprimme(dummy_type_kprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_kprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int globalSum_kprimme(dummy_type_kprimme *buffer, int count, primme_context ctx);
int broadcast_kprimme(dummy_type_kprimme *buffer, int count, primme_context ctx);
int machineEpsMatrix_kprimme(double *eps, primme_context ctx);
int machineEpsOrth_kprimme(double *eps, primme_context ctx);
dummy_type_sprimme problemNorm_kprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_sprimme deltaEig_kprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_kprimme(dummy_type_kprimme *x, PRIMME_INT ldx, dummy_type_kprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_cprimme *result, primme_context ctx);
int Num_dist_dots_real_kprimme(dummy_type_kprimme *x, PRIMME_INT ldx, dummy_type_kprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int matrixMatvec_sprimme(dummy_type_sprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_sprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_sprimme(dummy_type_sprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_sprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_sprimme(dummy_type_sprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_sprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int globalSum_sprimme(dummy_type_sprimme *buffer, int count, primme_context ctx);
int broadcast_sprimme(dummy_type_sprimme *buffer, int count, primme_context ctx);
int machineEpsMatrix_sprimme(double *eps, primme_context ctx);
int machineEpsOrth_sprimme(double *eps, primme_context ctx);
dummy_type_sprimme problemNorm_sprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_sprimme deltaEig_sprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_sprimme(dummy_type_sprimme *x, PRIMME_INT ldx, dummy_type_sprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int Num_dist_dots_real_sprimme(dummy_type_sprimme *x, PRIMME_INT ldx, dummy_type_sprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int matrixMatvec_cprimme(dummy_type_cprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_cprimme(dummy_type_cprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_cprimme(dummy_type_cprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int globalSum_cprimme(dummy_type_cprimme *buffer, int count, primme_context ctx);
int broadcast_cprimme(dummy_type_cprimme *buffer, int count, primme_context ctx);
int machineEpsMatrix_cprimme(double *eps, primme_context ctx);
int machineEpsOrth_cprimme(double *eps, primme_context ctx);
dummy_type_sprimme problemNorm_cprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_sprimme deltaEig_cprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_cprimme(dummy_type_cprimme *x, PRIMME_INT ldx, dummy_type_cprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_cprimme *result, primme_context ctx);
int Num_dist_dots_real_cprimme(dummy_type_cprimme *x, PRIMME_INT ldx, dummy_type_cprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int matrixMatvec_zprimme(dummy_type_zprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_zprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_zprimme(dummy_type_zprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_zprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_zprimme(dummy_type_zprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_zprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int globalSum_zprimme(dummy_type_zprimme *buffer, int count, primme_context ctx);
int broadcast_zprimme(dummy_type_zprimme *buffer, int count, primme_context ctx);
int machineEpsMatrix_zprimme(double *eps, primme_context ctx);
int machineEpsOrth_zprimme(double *eps, primme_context ctx);
dummy_type_dprimme problemNorm_zprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_dprimme deltaEig_zprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_zprimme(dummy_type_zprimme *x, PRIMME_INT ldx, dummy_type_zprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_zprimme *result, primme_context ctx);
int Num_dist_dots_real_zprimme(dummy_type_zprimme *x, PRIMME_INT ldx, dummy_type_zprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_dprimme *result, primme_context ctx);
int matrixMatvec_magma_hprimme(dummy_type_magma_hprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_hprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_magma_hprimme(dummy_type_magma_hprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_hprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_magma_hprimme(dummy_type_magma_hprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_hprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int machineEpsMatrix_magma_hprimme(double *eps, primme_context ctx);
int machineEpsOrth_magma_hprimme(double *eps, primme_context ctx);
dummy_type_sprimme problemNorm_magma_hprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_sprimme deltaEig_magma_hprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_magma_hprimme(dummy_type_magma_hprimme *x, PRIMME_INT ldx, dummy_type_magma_hprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int Num_dist_dots_real_magma_hprimme(dummy_type_magma_hprimme *x, PRIMME_INT ldx, dummy_type_magma_hprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int matrixMatvec_magma_kprimme(dummy_type_magma_kprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_kprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_magma_kprimme(dummy_type_magma_kprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_kprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_magma_kprimme(dummy_type_magma_kprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_kprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int machineEpsMatrix_magma_kprimme(double *eps, primme_context ctx);
int machineEpsOrth_magma_kprimme(double *eps, primme_context ctx);
dummy_type_sprimme problemNorm_magma_kprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_sprimme deltaEig_magma_kprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_magma_kprimme(dummy_type_magma_kprimme *x, PRIMME_INT ldx, dummy_type_magma_kprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_cprimme *result, primme_context ctx);
int Num_dist_dots_real_magma_kprimme(dummy_type_magma_kprimme *x, PRIMME_INT ldx, dummy_type_magma_kprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int matrixMatvec_magma_sprimme(dummy_type_magma_sprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_sprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_magma_sprimme(dummy_type_magma_sprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_sprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_magma_sprimme(dummy_type_magma_sprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_sprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int machineEpsMatrix_magma_sprimme(double *eps, primme_context ctx);
int machineEpsOrth_magma_sprimme(double *eps, primme_context ctx);
dummy_type_sprimme problemNorm_magma_sprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_sprimme deltaEig_magma_sprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_magma_sprimme(dummy_type_magma_sprimme *x, PRIMME_INT ldx, dummy_type_magma_sprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int Num_dist_dots_real_magma_sprimme(dummy_type_magma_sprimme *x, PRIMME_INT ldx, dummy_type_magma_sprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int matrixMatvec_magma_cprimme(dummy_type_magma_cprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_cprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_magma_cprimme(dummy_type_magma_cprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_cprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_magma_cprimme(dummy_type_magma_cprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_cprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int machineEpsMatrix_magma_cprimme(double *eps, primme_context ctx);
int machineEpsOrth_magma_cprimme(double *eps, primme_context ctx);
dummy_type_sprimme problemNorm_magma_cprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_sprimme deltaEig_magma_cprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_magma_cprimme(dummy_type_magma_cprimme *x, PRIMME_INT ldx, dummy_type_magma_cprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_cprimme *result, primme_context ctx);
int Num_dist_dots_real_magma_cprimme(dummy_type_magma_cprimme *x, PRIMME_INT ldx, dummy_type_magma_cprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int matrixMatvec_magma_dprimme(dummy_type_magma_dprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_dprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_magma_dprimme(dummy_type_magma_dprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_dprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_magma_dprimme(dummy_type_magma_dprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_dprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int machineEpsMatrix_magma_dprimme(double *eps, primme_context ctx);
int machineEpsOrth_magma_dprimme(double *eps, primme_context ctx);
dummy_type_dprimme problemNorm_magma_dprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_dprimme deltaEig_magma_dprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_magma_dprimme(dummy_type_magma_dprimme *x, PRIMME_INT ldx, dummy_type_magma_dprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_dprimme *result, primme_context ctx);
int Num_dist_dots_real_magma_dprimme(dummy_type_magma_dprimme *x, PRIMME_INT ldx, dummy_type_magma_dprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_dprimme *result, primme_context ctx);
int matrixMatvec_magma_zprimme(dummy_type_magma_zprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_zprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_magma_zprimme(dummy_type_magma_zprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_zprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_magma_zprimme(dummy_type_magma_zprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_magma_zprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int machineEpsMatrix_magma_zprimme(double *eps, primme_context ctx);
int machineEpsOrth_magma_zprimme(double *eps, primme_context ctx);
dummy_type_dprimme problemNorm_magma_zprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_dprimme deltaEig_magma_zprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_magma_zprimme(dummy_type_magma_zprimme *x, PRIMME_INT ldx, dummy_type_magma_zprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_zprimme *result, primme_context ctx);
int Num_dist_dots_real_magma_zprimme(dummy_type_magma_zprimme *x, PRIMME_INT ldx, dummy_type_magma_zprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_dprimme *result, primme_context ctx);
int matrixMatvec_cublas_hprimme(dummy_type_cublas_hprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_hprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_cublas_hprimme(dummy_type_cublas_hprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_hprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_cublas_hprimme(dummy_type_cublas_hprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_hprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int machineEpsMatrix_cublas_hprimme(double *eps, primme_context ctx);
int machineEpsOrth_cublas_hprimme(double *eps, primme_context ctx);
dummy_type_sprimme problemNorm_cublas_hprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_sprimme deltaEig_cublas_hprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_cublas_hprimme(dummy_type_cublas_hprimme *x, PRIMME_INT ldx, dummy_type_cublas_hprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int Num_dist_dots_real_cublas_hprimme(dummy_type_cublas_hprimme *x, PRIMME_INT ldx, dummy_type_cublas_hprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int matrixMatvec_cublas_kprimme(dummy_type_cublas_kprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_kprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_cublas_kprimme(dummy_type_cublas_kprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_kprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_cublas_kprimme(dummy_type_cublas_kprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_kprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int machineEpsMatrix_cublas_kprimme(double *eps, primme_context ctx);
int machineEpsOrth_cublas_kprimme(double *eps, primme_context ctx);
dummy_type_sprimme problemNorm_cublas_kprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_sprimme deltaEig_cublas_kprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_cublas_kprimme(dummy_type_cublas_kprimme *x, PRIMME_INT ldx, dummy_type_cublas_kprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_cprimme *result, primme_context ctx);
int Num_dist_dots_real_cublas_kprimme(dummy_type_cublas_kprimme *x, PRIMME_INT ldx, dummy_type_cublas_kprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int matrixMatvec_cublas_sprimme(dummy_type_cublas_sprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_sprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_cublas_sprimme(dummy_type_cublas_sprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_sprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_cublas_sprimme(dummy_type_cublas_sprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_sprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int machineEpsMatrix_cublas_sprimme(double *eps, primme_context ctx);
int machineEpsOrth_cublas_sprimme(double *eps, primme_context ctx);
dummy_type_sprimme problemNorm_cublas_sprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_sprimme deltaEig_cublas_sprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_cublas_sprimme(dummy_type_cublas_sprimme *x, PRIMME_INT ldx, dummy_type_cublas_sprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int Num_dist_dots_real_cublas_sprimme(dummy_type_cublas_sprimme *x, PRIMME_INT ldx, dummy_type_cublas_sprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int matrixMatvec_cublas_cprimme(dummy_type_cublas_cprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_cprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_cublas_cprimme(dummy_type_cublas_cprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_cprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_cublas_cprimme(dummy_type_cublas_cprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_cprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int machineEpsMatrix_cublas_cprimme(double *eps, primme_context ctx);
int machineEpsOrth_cublas_cprimme(double *eps, primme_context ctx);
dummy_type_sprimme problemNorm_cublas_cprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_sprimme deltaEig_cublas_cprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_cublas_cprimme(dummy_type_cublas_cprimme *x, PRIMME_INT ldx, dummy_type_cublas_cprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_cprimme *result, primme_context ctx);
int Num_dist_dots_real_cublas_cprimme(dummy_type_cublas_cprimme *x, PRIMME_INT ldx, dummy_type_cublas_cprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_sprimme *result, primme_context ctx);
int matrixMatvec_cublas_dprimme(dummy_type_cublas_dprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_dprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_cublas_dprimme(dummy_type_cublas_dprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_dprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_cublas_dprimme(dummy_type_cublas_dprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_dprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int machineEpsMatrix_cublas_dprimme(double *eps, primme_context ctx);
int machineEpsOrth_cublas_dprimme(double *eps, primme_context ctx);
dummy_type_dprimme problemNorm_cublas_dprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_dprimme deltaEig_cublas_dprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_cublas_dprimme(dummy_type_cublas_dprimme *x, PRIMME_INT ldx, dummy_type_cublas_dprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_dprimme *result, primme_context ctx);
int Num_dist_dots_real_cublas_dprimme(dummy_type_cublas_dprimme *x, PRIMME_INT ldx, dummy_type_cublas_dprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_dprimme *result, primme_context ctx);
int matrixMatvec_cublas_zprimme(dummy_type_cublas_zprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_zprimme *W, PRIMME_INT ldW, int basisSize, int blockSize,
      primme_context ctx);
int massMatrixMatvec_cublas_zprimme(dummy_type_cublas_zprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_zprimme *BV, PRIMME_INT ldBV, int basisSize, int blockSize,
      primme_context ctx);
int applyPreconditioner_cublas_zprimme(dummy_type_cublas_zprimme *V, PRIMME_INT nLocal, PRIMME_INT ldV,
      dummy_type_cublas_zprimme *W, PRIMME_INT ldW, int blockSize, primme_context ctx);
int machineEpsMatrix_cublas_zprimme(double *eps, primme_context ctx);
int machineEpsOrth_cublas_zprimme(double *eps, primme_context ctx);
dummy_type_dprimme problemNorm_cublas_zprimme(
      int overrideUserEstimations, struct primme_params *primme);
dummy_type_dprimme deltaEig_cublas_zprimme(
      int overrideUserEstimations, primme_context ctx);
int Num_dist_dots_cublas_zprimme(dummy_type_cublas_zprimme *x, PRIMME_INT ldx, dummy_type_cublas_zprimme *y, PRIMME_INT ldy,
      PRIMME_INT m, int n, dummy_type_zprimme *result, primme_context ctx);
int Num_dist_dots_real_cublas_zprimme(dummy_type_cublas_zprimme *x, PRIMME_INT ldx, dummy_type_cublas_zprimme *y,
      PRIMME_INT ldy, PRIMME_INT m, int n, dummy_type_dprimme *result, primme_context ctx);
#endif
